#pragma once

#ifdef __KERNEL__

#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
#define NORET_TYPE   __volatile__
#define ATTRIB_NORET /**/
#define NORET_AND    /**/
#else
#define NORET_TYPE   /**/
#define ATTRIB_NORET __attribute__((noreturn))
#define NORET_AND    noreturn,
#endif

NORET_TYPE void panic(const char *fmt, ...)
    __attribute__((NORET_AND format(printf, 1, 2)));

int printk(const char *fmt, ...) __attribute__((format(printf, 1, 2))); // 第一个参数应该是一个格式化字符串,并且后面的参数按照这个格式化字符串进行解析

#endif
